package controllers.vecino;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import services.ComunidadDeVecinosService;
import services.CuotaService;
import services.PagoService;
import services.VecinoService;
import controllers.AbstractController;
import domain.ComunidadDeVecinos;
import domain.Cuota;
import domain.Pago;
import domain.Vecino;

@Controller
@RequestMapping("/dashboard/presidente")
public class DashboardPresidenteController extends AbstractController {
	@Autowired
	private PagoService pagoService;
	@Autowired
	private CuotaService cuotaService;
	@Autowired
	private ComunidadDeVecinosService comunidadDeVecinosService;
	@Autowired
	private VecinoService vecinoService;

	public DashboardPresidenteController() {
		super();
	}

	// Listing methods
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public ModelAndView list(@RequestParam int comunidadId) {
		ModelAndView result;

		Collection<Cuota> cuotas;
		Collection<Pago> pagos;
		Double fondo;
		ComunidadDeVecinos comunidadDeVecinos;
		Vecino presidente;

		presidente = vecinoService.findByPrincipal();
		comunidadDeVecinos = comunidadDeVecinosService.findOne(comunidadId);
		cuotas = cuotaService.findCuotasByComunidadDeVecinosPresidente(comunidadId);
		pagos = pagoService.findPagosByComunidadDeVecinos(comunidadId);

		fondo = comunidadDeVecinos.getFondo();

		result = new ModelAndView("dashboard/list");
		result.addObject("requestURI", "dashboard/vecino/list.do");
		result.addObject("cuotas", cuotas);
		result.addObject("pagos", pagos);
		result.addObject("fondo", fondo);
		result.addObject("backURI", "/welcome/index.do");
		if (!comunidadDeVecinos.getPresidente().equals(presidente)) {
			Collection<ComunidadDeVecinos> comunidades;
			int vecinoId;

			vecinoId = presidente.getId();
			comunidades = comunidadDeVecinosService.findByVecino();

			result = new ModelAndView("comunidad/list");

			result.addObject("message", "dashboard.president.error");
			result.addObject("requestURI", "comunidad/vecino/list.do");
			result.addObject("comunidades", comunidades);
			result.addObject("vecinoId", vecinoId);
			result.addObject("backURI", "/comunidad/vecino/list.do");
		}
		return result;

	}
}
